package gestion.camping.controleur;

import gestion.camping.connexion.Connexion;
import gestion.camping.dao.impl.ReservationDao;
import gestion.camping.dto.Personne;
import gestion.camping.dto.Reservation;
import gestion.camping.vue.ViewOccupantDetail;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JDialog;

public class OccupantController{
	
	private List<Personne> listOccupant;
	private Reservation reservation;
	private ReservationDao reservationDao = new ReservationDao(Connexion.getInstance());
	private ViewOccupantDetail frameDetail;
	private boolean isPossibleEnregistrer;
	
	/**
	 * Constructeur du controlleur personne
	 */
	public OccupantController(Reservation reservation){
		this.isPossibleEnregistrer = true;
		
		this.reservation = reservation;
		
		this.listOccupant = reservationDao.findOccupant(reservation);
	}
	
	public OccupantController(boolean isPossibleEnregistrer){
		this.isPossibleEnregistrer = isPossibleEnregistrer;
	}
	
	/**
	 * Accesseur aux JPanel contenant le détail d'une personne
	 * @return JPanel viewDetail
	 */
	public JDialog getViewDetail(){
		
		// Si emplacement est différent de null 
		if(listOccupant == null){
			//on est en création
			//On crée un objet vide
			listOccupant = new ArrayList<Personne>();
		}
				
		//On crée la fenêtre
		frameDetail = new ViewOccupantDetail(this);
		
		frameDetail.pack();
		
		frameDetail.setVisible(true);
		
		return frameDetail;
	}

	/**
	 * Permet la gestion de l'action utilisateur Enregistrer
	 * @param personne
	 */
	public void enregistrer(List<Personne> listOccupant) {
				
	
		this.listOccupant = listOccupant;
		
		if(isPossibleEnregistrer){
			
			this.listOccupant = reservationDao.ajoutOccupant(this.listOccupant, this.reservation);
			
			frameDetail.setListOccupant(this.listOccupant);
		}			
				
	}

	/**
	 * Permet la gestion de l'action utilisateur Retour à liste 
	 */
	public void retour() {
//		if(isPossibleEnregistrer){
//			//Si une recherche avait été faite
//			if(listEmplacement != null && listEmplacement.size() > 0){
//				//On effectue la dernière recherche
//				rechercher(id, secteur , typeTerrain);
//			}
//		}else{
//			if(listEmplacement != null){
//				//On recherche si la personne et déja présente dans la lite
//				int i;
//				for(i=0; i<listEmplacement.size() && listEmplacement.get(i).getId() != emplacement.getId(); i++);
//				if(i == listEmplacement.size()){
//					listEmplacement.add(emplacement);
//				}else{
//					listEmplacement.remove(i); 
//					listEmplacement.add(i, emplacement);
//				}
//				
//				//On met à jour la fenêtre
//				frameListe.setListEmplacement(listEmplacement);
//				
//			}
//		}
		
	}

	public boolean isPossibleEnregistrer() {
		return isPossibleEnregistrer;
	}

	public void setPossibleEnregistrer(boolean isPossibleEnregistrer) {
		this.isPossibleEnregistrer = isPossibleEnregistrer;
	}

	public Reservation getReservation() {
		return reservation;
	}

	public void setReservation(Reservation reservation) {
		this.reservation = reservation;
	}
	
	public List<Personne> getListOccupant() {
		return listOccupant;
	}

	public void setListOccupant(List<Personne> listOccupant) {
		this.listOccupant = listOccupant;
	}

	public void ajoutOccupant(List<Personne> listOccupant) {
		this.listOccupant = listOccupant;
		
		frameDetail.setListOccupant(listOccupant);
	}

	public void supprimerOccupant(List<Personne> listOccupant) {
		this.listOccupant = listOccupant;
		
		frameDetail.setListOccupant(listOccupant);
	}


	
}
